The Mini-OS build once again broke, this time since vcpu_data became vcpu_info
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 6 Dec 2005 15:05:31 +0000 (16:05 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Tue, 6 Dec 2005 15:05:31 +0000 (16:05 +0100)
and that XEN_VER in the __xen_guest section changed slightly. I've modified
the mini-os so that it at least compiles and boots again.

Signed-off-by: Simon Kagstrom <simon.kagstrom@bth.se>
extras/mini-os/events.c
extras/mini-os/hypervisor.c
extras/mini-os/include/os.h
extras/mini-os/time.c
extras/mini-os/x86_32.S

index 5263c8757ebc542dfaccbd13bc16119e376dbddc..adf0afd13e7103371ec5b1524273fe060e52685f 100644 (file)
@@ -77,6 +77,7 @@ int bind_virq( u32 virq, void (*handler)(int, struct pt_regs *) )
        /* Try to bind the virq to a port */
        op.cmd = EVTCHNOP_bind_virq;
        op.u.bind_virq.virq = virq;
+       op.u.bind_virq.vcpu = smp_processor_id();
 
        if ( HYPERVISOR_event_channel_op(&op) != 0 )
        {
index 53321b2a7d3894c3468af7d2cffbae9ae02b8632..29a34a463feb076110919b5e0c19bbfdb12a2b90 100644 (file)
@@ -39,7 +39,7 @@ void do_hypervisor_callback(struct pt_regs *regs)
     unsigned int   l1i, l2i, port;
     int            cpu = 0;
     shared_info_t *s = HYPERVISOR_shared_info;
-    vcpu_info_t   *vcpu_info = &s->vcpu_data[cpu];
+    vcpu_info_t   *vcpu_info = &s->vcpu_info[cpu];
 
     vcpu_info->evtchn_upcall_pending = 0;
     
@@ -71,7 +71,7 @@ inline void mask_evtchn(u32 port)
 inline void unmask_evtchn(u32 port)
 {
     shared_info_t *s = HYPERVISOR_shared_info;
-    vcpu_info_t *vcpu_info = &s->vcpu_data[smp_processor_id()];
+    vcpu_info_t *vcpu_info = &s->vcpu_info[smp_processor_id()];
 
     synch_clear_bit(port, &s->evtchn_mask[0]);
 
index 751a058888acd24a343af3425df39ae8607501d6..805739f239cee8bfdbc0626bec8e69404d02cc1c 100644 (file)
@@ -70,7 +70,7 @@ void trap_init(void);
 #define __cli()                                                                \
 do {                                                                   \
        vcpu_info_t *_vcpu;                                             \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()]; \
+       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
        _vcpu->evtchn_upcall_mask = 1;                                  \
        barrier();                                                      \
 } while (0)
@@ -79,7 +79,7 @@ do {                                                                  \
 do {                                                                   \
        vcpu_info_t *_vcpu;                                             \
        barrier();                                                      \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()]; \
+       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
        _vcpu->evtchn_upcall_mask = 0;                                  \
        barrier(); /* unmask then check (avoid races) */                \
        if ( unlikely(_vcpu->evtchn_upcall_pending) )                   \
@@ -89,7 +89,7 @@ do {                                                                  \
 #define __save_flags(x)                                                        \
 do {                                                                   \
        vcpu_info_t *_vcpu;                                             \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()]; \
+       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
        (x) = _vcpu->evtchn_upcall_mask;                                \
 } while (0)
 
@@ -97,7 +97,7 @@ do {                                                                  \
 do {                                                                   \
        vcpu_info_t *_vcpu;                                             \
        barrier();                                                      \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()]; \
+       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
        if ((_vcpu->evtchn_upcall_mask = (x)) == 0) {                   \
                barrier(); /* unmask then check (avoid races) */        \
                if ( unlikely(_vcpu->evtchn_upcall_pending) )           \
@@ -110,7 +110,7 @@ do {                                                                        \
 #define __save_and_cli(x)                                              \
 do {                                                                   \
        vcpu_info_t *_vcpu;                                             \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_data[smp_processor_id()]; \
+       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
        (x) = _vcpu->evtchn_upcall_mask;                                \
        _vcpu->evtchn_upcall_mask = 1;                                  \
        barrier();                                                      \
@@ -123,7 +123,7 @@ do {                                                                        \
 #define local_irq_enable()     __sti()
 
 #define irqs_disabled()                        \
-    HYPERVISOR_shared_info->vcpu_data[smp_processor_id()].evtchn_upcall_mask
+    HYPERVISOR_shared_info->vcpu_info[smp_processor_id()].evtchn_upcall_mask
 
 /* This is a barrier for the compiler only, NOT the processor! */
 #define barrier() __asm__ __volatile__("": : :"memory")
index e66331e592adee3b8c07fe47a3f859a1a36a3f2f..04ea43dc5161c8e1e90bb6cb8bb79a72874b90f6 100644 (file)
@@ -73,7 +73,7 @@ static struct shadow_time_info shadow;
 
 static inline int time_values_up_to_date(void)
 {
-       struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_time[0]
+       struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time
 
        return (shadow.version == src->version);
 }
@@ -127,7 +127,7 @@ static unsigned long get_nsec_offset(void)
 
 static void get_time_values_from_xen(void)
 {
-       struct vcpu_time_info    *src = &HYPERVISOR_shared_info->vcpu_time[0];
+       struct vcpu_time_info    *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
 
        do {
                shadow.version = src->version;
index 3daeb2167d2113bd2fd941ae5b29a8555831872a..6a17bf3c0721ab7671ca3f05b16478308cea0af0 100644 (file)
@@ -3,7 +3,11 @@
 
 
 .section __xen_guest
-        .asciz  "XEN_VER=3.0,LOADER=generic,PT_MODE_WRITABLE"
+       .ascii  "GUEST_OS=Mini-OS"
+       .ascii  ",XEN_VER=xen-3.0"
+       .ascii  ",LOADER=generic"
+       .ascii  ",PT_MODE_WRITABLE"
+       .byte   0
 .text
 
 .globl _start, shared_info